{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "FaST-LMM: New Features for 2021\r\n",
    "=====\r\n",
    "\r\n",
    "This notebook demonstrates these new features of FaST-LMM's `single_snp` function:\r\n",
    "\r\n",
    "* multiple phenotypes\r\n",
    "* filtering output by p-value and random sampling\r\n",
    "* caching to divide the work into parts (useful for running jobs that run from several hours to several days.)\r\n",
    "* controlling multi-processor runs\r\n",
    "\r\n",
    "and these [new features of `epistasis`](#epistasis):\r\n",
    "\r\n",
    "* reports β, the linear coefficient of the epistatic interaction, and its variance\r\n",
    "* supports a user-supplied eigenvalue decomposition of the Realized Relationship Matrix (RRM) matrix\r\n",
    "\r\n",
    "The notebook is an addition to the [main FaST-LMM notebook](https://nbviewer.jupyter.org/github/fastlmm/FaST-LMM/blob/master/doc/ipynb/FaST-LMM.ipynb)."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "To prepare this notebook to run analyses, please run the following script."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "source": [
    "# set some ipython notebook properties\r\n",
    "%matplotlib inline\r\n",
    "\r\n",
    "# set degree of verbosity (adapt to INFO for more verbose output)\r\n",
    "import logging\r\n",
    "logging.basicConfig(level=logging.WARNING)\r\n",
    "\r\n",
    "# set figure sizes\r\n",
    "import pylab\r\n",
    "pylab.rcParams['figure.figsize'] = (10.0, 8.0)\r\n",
    "#pylab.plot([1,2,3],[4,5,6])\r\n",
    "\r\n",
    "# set display width for pandas data frames\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Multiple Phenotype\n",
    "\n",
    "Previous version of `single_snp` looked for associations between SNPs and one phenotype. The new version supports multiple phenotypes, for example multiple conditions or diseases. The number of phenotypes can be a few, dozens, or thousands. Testing multiple phenotypes in one run is much faster than testing them one at a time.\n",
    "\n",
    "In this example, we'll expand the example from the [main FaST-LMM notebook](https://nbviewer.jupyter.org/github/fastlmm/FaST-LMM/blob/master/doc/ipynb/FaST-LMM.ipynb). Along with the original phenotype, for demonstration purposes, we'll also test its square and cube. We'll create this new phenotype data in memory, but you'll typically, instead, just read multiple phenotypes from a single file."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "source": [
    "import numpy as np\r\n",
    "from pysnptools.snpreader import Pheno, SnpData\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# For example, create multiple phenotype in memory\r\n",
    "##############################\r\n",
    "pheno1 = Pheno(example_file(\"tests/datasets/synth/pheno_10_causals.txt\")).read()\r\n",
    "pheno3 = SnpData(iid=pheno1.iid,\r\n",
    "                 sid=[\"original\",\"sqrt\",\"square\"],\r\n",
    "                 val= np.c_[pheno1.val,pheno1.val**2,pheno1.val**3]\r\n",
    ")"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "We run just as in the main FaST-LMM notebook but with pheno3, which contains multiple phenotypes."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "source": [
    "# import the algorithm\r\n",
    "import numpy as np\r\n",
    "from fastlmm.association import single_snp\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# set up data\r\n",
    "##############################\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# run gwas with pheno3\r\n",
    "###################################################################\r\n",
    "results_df = single_snp(bed_fn, pheno3, covar=cov_fn, count_A1=False)\r\n",
    "\r\n",
    "# manhattan plot\r\n",
    "import pylab\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "pylab.rcParams['figure.figsize'] = (10.0, 8.0)#For some reason, need again (appears above too) to get big figures\r\n",
    "flutil.manhattan_plot(results_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5/pheno3.sid_count,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "\r\n",
    "# qq plot\r\n",
    "from fastlmm.util.stats import plotp\r\n",
    "plotp.qqplot(results_df[\"PValue\"].values, xlim=[0,5], ylim=[0,5])\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "lambda=1.0126\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\Carl\\miniconda3\\envs\\gtg\\lib\\site-packages\\numpy\\lib\\scimath.py:122: RuntimeWarning: invalid value encountered in less\n",
      "  if any(isreal(x) & (x < 0)):\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl  Mixing    Nullh2     Pheno  PhenoCount\n",
       "0         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  4.970585e-35   3.069400     0.229633         0.514225       0  0.300930    square           3\n",
       "1         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  7.180110e-32  -0.872371     0.069123         0.492648       0  0.451557      sqrt           3\n",
       "2         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  2.990684e-23   0.418653     0.040052         0.424521       0  0.451117  original           3\n",
       "3        392   snp1422_m0_.49m1_.5  3.0   2392.0  2392.0  8.251920e-23  -0.416495     0.040300         0.420587       0  0.279711  original           3\n",
       "4        650  snp1200_m0_.37m1_.36  3.0   2650.0  2650.0  3.048007e-14   0.328870     0.042021         0.331240       0  0.279711  original           3\n",
       "5        392   snp1422_m0_.49m1_.5  3.0   2392.0  2392.0  9.732331e-11  -1.691786     0.255819         0.284394       0  0.263895    square           3\n",
       "6          3   snp433_m0_.14m1_.11  3.0   2003.0  2003.0  9.202499e-10  -0.268289     0.042973         0.269670       0  0.279711  original           3\n",
       "7        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.383880e-08   1.480571     0.256529         0.250627       0  0.417260    square           3\n",
       "8        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.308581e-05  -0.340112     0.077247         0.193755       0  0.495164      sqrt           3\n",
       "9        415   snp1166_m0_.08m1_.1  2.0   1415.0  1415.0  5.007490e-05  -0.315055     0.077009         0.180499       0  0.509244      sqrt           3"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "      <th>Pheno</th>\n",
       "      <th>PhenoCount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4.970585e-35</td>\n",
       "      <td>3.069400</td>\n",
       "      <td>0.229633</td>\n",
       "      <td>0.514225</td>\n",
       "      <td>0</td>\n",
       "      <td>0.300930</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>7.180110e-32</td>\n",
       "      <td>-0.872371</td>\n",
       "      <td>0.069123</td>\n",
       "      <td>0.492648</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451557</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>2.990684e-23</td>\n",
       "      <td>0.418653</td>\n",
       "      <td>0.040052</td>\n",
       "      <td>0.424521</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>392</td>\n",
       "      <td>snp1422_m0_.49m1_.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>8.251920e-23</td>\n",
       "      <td>-0.416495</td>\n",
       "      <td>0.040300</td>\n",
       "      <td>0.420587</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>650</td>\n",
       "      <td>snp1200_m0_.37m1_.36</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2650.0</td>\n",
       "      <td>2650.0</td>\n",
       "      <td>3.048007e-14</td>\n",
       "      <td>0.328870</td>\n",
       "      <td>0.042021</td>\n",
       "      <td>0.331240</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>392</td>\n",
       "      <td>snp1422_m0_.49m1_.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>9.732331e-11</td>\n",
       "      <td>-1.691786</td>\n",
       "      <td>0.255819</td>\n",
       "      <td>0.284394</td>\n",
       "      <td>0</td>\n",
       "      <td>0.263895</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3</td>\n",
       "      <td>snp433_m0_.14m1_.11</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2003.0</td>\n",
       "      <td>2003.0</td>\n",
       "      <td>9.202499e-10</td>\n",
       "      <td>-0.268289</td>\n",
       "      <td>0.042973</td>\n",
       "      <td>0.269670</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.383880e-08</td>\n",
       "      <td>1.480571</td>\n",
       "      <td>0.256529</td>\n",
       "      <td>0.250627</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.308581e-05</td>\n",
       "      <td>-0.340112</td>\n",
       "      <td>0.077247</td>\n",
       "      <td>0.193755</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>415</td>\n",
       "      <td>snp1166_m0_.08m1_.1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1415.0</td>\n",
       "      <td>1415.0</td>\n",
       "      <td>5.007490e-05</td>\n",
       "      <td>-0.315055</td>\n",
       "      <td>0.077009</td>\n",
       "      <td>0.180499</td>\n",
       "      <td>0</td>\n",
       "      <td>0.509244</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 3
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {
    "scrolled": true
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "Running with multiple phenotypes differs from running with a single phenotype in these ways:\n",
    "\n",
    "### More output lines (and tougher p-value threshold for significance)\n",
    "\n",
    "Instead of one output line per test SNP, we receive one output line per \\[test SNP, phenotype\\] pair. In the example, we have 5000 test SNPs and three phenotypes, so the number of output lines will be 15,000.\n",
    "\n",
    "As before, each output line will contain one p-value. Because we are testing more hypotheses, we need adjust the p-value threshold for significance. For example, if that threshold was 1e-5 for one phenotype, then the [Bonferroni correction](https://en.wikipedia.org/wiki/Bonferroni_correction) says that for three phenotypes should be 1e-5 divided by 3.\n",
    "\n",
    "### New columns\n",
    "\n",
    "The output contains two new columns: `Pheno` and `PhenoCount`. In this case, `Pheno` will be 'Original', 'Square', or 'Cube'. `PhenoCount` will be 3.\n",
    "\n",
    "### Missing data handling\n",
    "\n",
    "For a given individual, phonotype data must be entirely present or entirely missing. A user with some phenotype data present and some missing is not supported. In detail:\n",
    "\n",
    "* For a given individual, all phenotype data is present -- individual is included in computation.\n",
    "* For a given individual, all phenotype is missing -- individual is removed from computation.\n",
    "* For a given individual, some phenotype is present and some is missing -- an error is raised.\n",
    "\n",
    "In the last case, if an error is raised, we would either need to fix the data before giving it `single_snp` (perhaps by filling in missing data or by removing the individual) or create a loop around `single_snp` and running one phenotype at a time. Note that the 'create a loop' method is slower and produces results based on different subsets of individuals.\n",
    "\n",
    "### No support for 2nd kernel\n",
    "\n",
    "The `single_snp` function supports multiple similarity kernels when the number of phentotypes is 1. When multiple phenotypes are given, no second kernel is allowed."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Filtering Output by p-value and Random Sampling\n",
    "\n",
    "The `single_snp` function may compute more p-values that we wish to see in the output. Two new options let us filter out less interesting rows.\n",
    "\n",
    "Use `pvalue_threshold` to include all p-values smaller than the given threshold. With this we can create a censored Manhatten plot that shows the interesting values and some less interesting values, but that excludes very uninteresting values.\n",
    "\n",
    "Use `random_threshold` to include a random sample of output lines. Sampling works by first assigning each potential output line a random number drawn from a uniform distribution between 0.0 and 1.0. The program then checks if that random number is below our random threshold. With a random sample of output lines, we can create a Q-Q plot that lets us know whether the model is controlling for type-I error."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "source": [
    "# import the algorithm\r\n",
    "import numpy as np\r\n",
    "from pysnptools.snpreader import Pheno\r\n",
    "from fastlmm.association import single_snp\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# set up data\r\n",
    "##############################\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "pheno1 = Pheno(example_file(\"tests/datasets/synth/pheno_10_causals.txt\")).read()\r\n",
    "pheno3 = SnpData(iid=pheno1.iid,\r\n",
    "                 sid=[\"original\",\"sqrt\",\"square\"],\r\n",
    "                 val= np.c_[pheno1.val,pheno1.val**2,pheno1.val**3]\r\n",
    ")\r\n",
    "\r\n",
    "# run gwas\r\n",
    "###################################################################\r\n",
    "results_df = single_snp(bed_fn, pheno3, covar=cov_fn, count_A1=False, pvalue_threshold=5e-2, random_threshold=.1)\r\n",
    "print(len(results_df))\r\n",
    "\r\n",
    "# manhattan plot\r\n",
    "import pylab\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "pylab.rcParams['figure.figsize'] = (10.0, 8.0)#For some reason, need again (appears above too) to get big figures\r\n",
    "top_pvalues_df = results_df[results_df['PValue']<=results_df['PValueThreshold']]\r\n",
    "flutil.manhattan_plot(top_pvalues_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5/pheno3.sid_count,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "\r\n",
    "# qq plot\r\n",
    "from fastlmm.util.stats import plotp\r\n",
    "random_df = results_df[results_df['RandomValue']<=results_df['RandomThreshold']]\r\n",
    "plotp.qqplot(random_df[\"PValue\"].values, xlim=[0,5], ylim=[0,5])\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "2051\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAHgCAYAAAB0CWMeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABFJ0lEQVR4nO3dd3hc53nm//sRSfUuUzJjSZFtucsKLdGOte6yE8uJWxxHsdd9k5+8vuJNNptdx/E6ib37k205smRJtnqXqEIVSqIoUgKLSLETYK8gCbCAAAii9zIzz/7xzgAYYAYYAJwz4PD7uS5cGJwzM+cBcMp93vc9Z8zdBQAAgPw7qdAFAAAAnCgIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARmVroAnLxpje9yS+77LJClwEAADCqsrKyenefnmnecRG8LrvsMpWWlha6DAAAgFGZ2YFs8+hqBAAAiAjBCwAAICIELwAAgIgQvAAAACJC8AIAAIgIwQsAACAieQteZnaqma0zs81mtt3Mfp6c/rCZVZrZpuTXzHzVAAAAMJnk8z5ePZKudfd2M5smaYWZLUjO+1/u/mwelw0AADDp5C14ubtLak/+OC355flaHgAAwGSX1zFeZjbFzDZJqpNU4u5rk7NuNLMtZnarmZ2S5bU3mFmpmZUePXo0n2UCAABEIq/By93j7j5T0sWSPmRmV0j6F0nvlvRBSedL+ucsr73X3We5+6zp0zN+3BEAAMBxJZKrGt29WdJSSde5e40HPZIekvShKGoAAAAotHxe1TjdzM5NPj5N0p9I2mVmM5LTTNKXJW3LVw0AAACTST6vapwh6REzm6IQ8Oa4+8tmtsTMpksySZsk/dc81gAAADBp5POqxi2SPpBh+rX5WiYAAMBkls8WLwAAELHeXmnvXmnaNOnyyyWzQleEwQheAAAUid5e6cEHpdra8POVV0pf+Upha0I6PqsRAIAisW/fQOiSpC1bpLa2wtWD4QheAAAUiZNPTv/5pJOkqfRtTSoELwAAisTb3y59IHlZ20knSZ/7nHTaaYWtCenIwQAAFJEvfUn6zGdCS9cpGT+UD4VE8AIAoMiccUahK0A2dDUCAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAFKFYrNAVIJOphS4AAAAcO3190tNPS3v3SuefL33zm+E7JgdavAAAKCJlZSF0SVJjo1RSUth6kI7gBQBAEentHflnFBbBCwCAInLVVdJ554XHJ58sfexjha0H6RjjBQBAETnzTOkHP5Dq6qRzzw0/Y/IgeAEAUGROPlm6+OJCV4FM6GoEAACICMELAAAgIgQvAACAiBC8AAAAIkLwAgAAiAjBCwAAICJ5C15mdqqZrTOzzWa23cx+npz+VjNba2Z7zexpMzs5XzUAAABMJvls8eqRdK27/5GkmZKuM7MPS7pJ0q3ufrmkJkl/k8caAAAAJo28BS8P2pM/Tkt+uaRrJT2bnP6IpC/nqwYAAIDJJK9jvMxsipltklQnqUTSPknN7h5LPqVK0lvyWQMAAMBkkdfg5e5xd58p6WJJH5L07lxfa2Y3mFmpmZUePXo0XyUCAABEJpKrGt29WdJSSddIOtfMUp8RebGkw1lec6+7z3L3WdOnT4+iTAAAgLzK51WN083s3OTj0yT9iaSdCgHsq8mnfUfSi/mqAQAAYDKZOvpTxm2GpEfMbIpCwJvj7i+b2Q5JT5nZ/y9po6QH8lgDAADApJG34OXuWyR9IMP0CoXxXgAAACcU7lwPAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgB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RWThQunZZ6U1awpdCQAAyITgVUQuv1y68ELpD/+w0JUAAIBMpha6ABw7V14ZvgAAwOREixcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARmVroAnLR0NCghx9+OG3a+973Pn3wgx9UX1+fZs+ePew1M2fO1MyZM9XZ2ak5c+YMmz9r1ixdccUVamlp0dy5c4fNv+aaa/Sud71L9fX1evnll4fN//jHP663ve1tqq2t1cKFC4fN//SnP61LLrlEhw4d0uLFi4fNv+666/TmN79ZFRUVWr58+bD5n//85/WmN71Ju3fv1urVq4fN/4u/+Audc8452rZtm0pLS4fNv/7663X66adr06ZN2rRp07D53/jGNzRt2jStX79e27dvHzb/u9/9riRp1apVKi8vT5s3bdo0feMb35AkLVu2TJWVlWnzTz/9dF1//fWSpEWLFqmqqipt/tlnn62vfOUrkqSFCxeqtrY2bf4FF1ygL3zhC5KkefPmqaGhIW3+m9/8Zl133XWSpOeff16tra1p8y+++GJ95jOfkSTNmTNHnZ2dafPf+ta36hOf+IQkafbs2err60ub/853vlP/6T/9J0katt5JrHuse6x7rHuse0Ox7o287g1GixcAAEBEzN0LXcOoZs2a5ZkSJgAAwGRjZmXuPivTvIJ0NZrZfkltkuKSYtmKAwAAKCaFHOP1KXevL+DyAQAAIsUYLwAAgIgUKni5pNfMrMzMbsj0BDO7wcxKzaz06NGjEZd3/OrtldrbC10FAADIpFDB66PufpWkz0n6OzP7+NAnuPu97j7L3WdNnz49+gqPU88/L91xhxSPF7oSAAAwVEHGeLn74eT3OjObK+lDkobfWANjduWV0kUXSVOmFLoSAAAwVOQtXmZ2hpmdlXos6U8lbYu6jmL13vdKn/pUoasAAACZFKLF6yJJc80stfwn3H34bWgBAACKTOTBy90rJP1R1MsFAAAoNG4nAQAAEBGCF5BFLBHT8fCRWgCA4wfBC8ji9rW3a175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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "lambda=0.9231\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\Carl\\miniconda3\\envs\\gtg\\lib\\site-packages\\numpy\\lib\\scimath.py:122: RuntimeWarning: invalid value encountered in less\n",
      "  if any(isreal(x) & (x < 0)):\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl  Mixing    Nullh2     Pheno  PhenoCount  PValueThreshold  RandomValue  RandomThreshold  RandomSeed  PValueCount\n",
       "0         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  4.970585e-35   3.069400     0.229633         0.514225       0  0.300930    square           3             0.05     0.429538              0.1           0         3000\n",
       "1         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  7.180110e-32  -0.872371     0.069123         0.492648       0  0.451557      sqrt           3             0.05     0.771803              0.1           0         3000\n",
       "2         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  2.990684e-23   0.418653     0.040052         0.424521       0  0.451117  original           3             0.05     0.155787              0.1           0         3000\n",
       "3        392   snp1422_m0_.49m1_.5  3.0   2392.0  2392.0  8.251920e-23  -0.416495     0.040300         0.420587       0  0.279711  original           3             0.05     0.707699              0.1           0         3000\n",
       "4        650  snp1200_m0_.37m1_.36  3.0   2650.0  2650.0  3.048007e-14   0.328870     0.042021         0.331240       0  0.279711  original           3             0.05     0.540116              0.1           0         3000\n",
       "5        392   snp1422_m0_.49m1_.5  3.0   2392.0  2392.0  9.732331e-11  -1.691786     0.255819         0.284394       0  0.263895    square           3             0.05     0.697988              0.1           0         3000\n",
       "6          3   snp433_m0_.14m1_.11  3.0   2003.0  2003.0  9.202499e-10  -0.268289     0.042973         0.269670       0  0.279711  original           3             0.05     0.086047              0.1           0         3000\n",
       "7        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.383880e-08   1.480571     0.256529         0.250627       0  0.417260    square           3             0.05     0.055916              0.1           0         3000\n",
       "8        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.308581e-05  -0.340112     0.077247         0.193755       0  0.495164      sqrt           3             0.05     0.102950              0.1           0         3000\n",
       "9        415   snp1166_m0_.08m1_.1  2.0   1415.0  1415.0  5.007490e-05  -0.315055     0.077009         0.180499       0  0.509244      sqrt           3             0.05     0.433384              0.1           0         3000"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "      <th>Pheno</th>\n",
       "      <th>PhenoCount</th>\n",
       "      <th>PValueThreshold</th>\n",
       "      <th>RandomValue</th>\n",
       "      <th>RandomThreshold</th>\n",
       "      <th>RandomSeed</th>\n",
       "      <th>PValueCount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4.970585e-35</td>\n",
       "      <td>3.069400</td>\n",
       "      <td>0.229633</td>\n",
       "      <td>0.514225</td>\n",
       "      <td>0</td>\n",
       "      <td>0.300930</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.429538</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>7.180110e-32</td>\n",
       "      <td>-0.872371</td>\n",
       "      <td>0.069123</td>\n",
       "      <td>0.492648</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451557</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.771803</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>2.990684e-23</td>\n",
       "      <td>0.418653</td>\n",
       "      <td>0.040052</td>\n",
       "      <td>0.424521</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.155787</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>392</td>\n",
       "      <td>snp1422_m0_.49m1_.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>8.251920e-23</td>\n",
       "      <td>-0.416495</td>\n",
       "      <td>0.040300</td>\n",
       "      <td>0.420587</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.707699</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>650</td>\n",
       "      <td>snp1200_m0_.37m1_.36</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2650.0</td>\n",
       "      <td>2650.0</td>\n",
       "      <td>3.048007e-14</td>\n",
       "      <td>0.328870</td>\n",
       "      <td>0.042021</td>\n",
       "      <td>0.331240</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.540116</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>392</td>\n",
       "      <td>snp1422_m0_.49m1_.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>9.732331e-11</td>\n",
       "      <td>-1.691786</td>\n",
       "      <td>0.255819</td>\n",
       "      <td>0.284394</td>\n",
       "      <td>0</td>\n",
       "      <td>0.263895</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.697988</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3</td>\n",
       "      <td>snp433_m0_.14m1_.11</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2003.0</td>\n",
       "      <td>2003.0</td>\n",
       "      <td>9.202499e-10</td>\n",
       "      <td>-0.268289</td>\n",
       "      <td>0.042973</td>\n",
       "      <td>0.269670</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "      <td>original</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.086047</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.383880e-08</td>\n",
       "      <td>1.480571</td>\n",
       "      <td>0.256529</td>\n",
       "      <td>0.250627</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.055916</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.308581e-05</td>\n",
       "      <td>-0.340112</td>\n",
       "      <td>0.077247</td>\n",
       "      <td>0.193755</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.102950</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>415</td>\n",
       "      <td>snp1166_m0_.08m1_.1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1415.0</td>\n",
       "      <td>1415.0</td>\n",
       "      <td>5.007490e-05</td>\n",
       "      <td>-0.315055</td>\n",
       "      <td>0.077009</td>\n",
       "      <td>0.180499</td>\n",
       "      <td>0</td>\n",
       "      <td>0.509244</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.433384</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 4
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "In this example, using a `PValueThreshold` and `RandomThreshold` lets us reduce the number of output lines from 15,000 to 2,051. Filtering becomes even more important when the number of \\[test SNP, phenotypes\\] pairs is in the millions or billions. Filtering allows us to reduce output line from billions to, say, tens of thousands.\n",
    "\n",
    "Setting either `PValueThreshold` or  `RandomThreshold` produces this new column in the output:\n",
    "\n",
    "* `PValueCount` -- the number of p-values computed. This is the number of output lines that will be produced with no filtering. It is also the number of \\[test SNPs,  phenotype pairs\\]. In the example, it is 15,000.\n",
    "\n",
    "Setting a `PValueThreshold` produces this column:\n",
    "\n",
    "* `PValueThreshold` -- the `PValueThreshold` used\n",
    "\n",
    "Setting a `RandomThreshold` produces these columns:\n",
    "\n",
    "* `RandomValue` -- the random value assigned to this output row\n",
    "* `RandomThreshold` -- the `RandomThreshold` used\n",
    "* `RandomSeed` -- the random seed used"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Caching to Divide the Work into Parts\n",
    "\n",
    "Internally, the `single_snp` function works in two parts:\n",
    "\n",
    "* Part 1 -- Merge similarity kernel information with covariate and phenotype information, process the kernel(s) via a matrix operation (SVD), and find best mix between kernel(s) and the identity matrix. (By default, do this with respect to each chromosome.)\n",
    "\n",
    "* Part 2 -- Test SNPs\n",
    "\n",
    "Caching lets us save the results from Part 1 before doing Part 2. In addition, if we have cached results for Part 1, we can easily do Part 2 pieces. This is especially useful if the parts take days to run. It also makes it easy to run Part 2 on multiple computers.\n",
    "\n",
    "Let's rerun our example with this caching. First, we do a run that will save Part 1's results to the cache files. This run still requires some test SNPs, so we give it just one test SNP per chromosome and ignore the results.\n",
    "\n",
    "Listing the files in the cache folder we see a file(s) created for each chromosome. Only runs with multiple phenotypes will have '*.extra.npz' files."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "source": [
    "# import the algorithm\r\n",
    "import numpy as np\r\n",
    "from pysnptools.snpreader import Bed, Pheno\r\n",
    "from fastlmm.association import single_snp\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# set up data\r\n",
    "##############################\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "all_snps = Bed(example_file('tests/datasets/synth/all.*','*.bed'),count_A1=False)\r\n",
    "# Find one test_snps per chromsome\r\n",
    "index_to_1_snp_per_chrom = np.unique(all_snps.pos[:,0],return_index=True)[1]\r\n",
    "small_test_snps = all_snps[:,index_to_1_snp_per_chrom]\r\n",
    "\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "pheno1 = Pheno(example_file(\"tests/datasets/synth/pheno_10_causals.txt\")).read()\r\n",
    "pheno3 = SnpData(iid=pheno1.iid,\r\n",
    "                 sid=[\"original\",\"sqrt\",\"square\"],\r\n",
    "                 val= np.c_[pheno1.val,pheno1.val**2,pheno1.val**3]\r\n",
    ")\r\n",
    "\r\n",
    "# run gwas\r\n",
    "###################################################################\r\n",
    "ignore_df = single_snp(test_snps=small_test_snps, K0=all_snps, pheno=pheno3, covar=cov_fn, count_A1=False,\r\n",
    "             cache_file=\"cache/fastlmm2021sample\")\r\n",
    "\r\n",
    "os.listdir(\"cache\")\r\n"
   ],
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "['fastlmm2021sample.1.0.npz',\n",
       " 'fastlmm2021sample.1.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.2.0.npz',\n",
       " 'fastlmm2021sample.2.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.3.0.npz',\n",
       " 'fastlmm2021sample.3.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.4.0.npz',\n",
       " 'fastlmm2021sample.4.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.5.0.npz',\n",
       " 'fastlmm2021sample.5.0.npz.extra.npz']"
      ]
     },
     "metadata": {},
     "execution_count": 5
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "Now let's test SNPs in pieces. We can divide the test SNPs any way we wish. In this example, we'll divide by chromosome."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "source": [
    "results_list = []\r\n",
    "for chrom in np.unique(all_snps.pos[:,0]): # For each chrom\r\n",
    "    test_snps = all_snps[:,all_snps.pos[:,0]==chrom] # Find the test SNPs in the chrom\r\n",
    "    chrom_df = single_snp(test_snps=test_snps,K0=all_snps, pheno=pheno3, covar=cov_fn, count_A1=False, \r\n",
    "                          cache_file=\"cache/fastlmm2021sample\",pvalue_threshold=5e-2, random_threshold=.1)\r\n",
    "    results_list.append(chrom_df)\r\n",
    "results_df = pd.concat(results_list)\r\n",
    "results_df\r\n",
    "\r\n",
    "# manhattan plot\r\n",
    "import pylab\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "pylab.rcParams['figure.figsize'] = (10.0, 8.0)#For some reason, need again (appears above too) to get big figures\r\n",
    "top_pvalues_df = results_df[results_df['PValue']<=results_df['PValueThreshold']]\r\n",
    "flutil.manhattan_plot(top_pvalues_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5/pheno3.sid_count,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "\r\n",
    "# qq plot\r\n",
    "from fastlmm.util.stats import plotp\r\n",
    "random_df = results_df[results_df['RandomValue']<=results_df['RandomThreshold']]\r\n",
    "plotp.qqplot(random_df[\"PValue\"].values, xlim=[0,5], ylim=[0,5])\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAHgCAYAAAB0CWMeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABH/UlEQVR4nO3dd5xc9X3v//dHBYSEEBhEMaIYMM0YhJGxccHdAdsYm/jiOLgmDokf9iPxTX5JfJ3cm/jmOo4dgw3YGNN7E12ogBBCQnVR710rabW72qbtbcrn98d3tszuzO7saueMNHo9H4997O6Zcj47O+fM+3y/3/M95u4CAABA/o0qdAEAAABHC4IXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQETGFLqAXJxyyil+7rnnFroMAACAQa1cubLG3Sdnuu2ICF7nnnuuVqxYUegyAAAABmVme7LdRlcjAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABHJW/Ays3FmVmJma81so5n9LLX8YTPbbWZrUl9T81UDAADA4SSf83h1SPq0uzeb2VhJi8xsduq2f3T35/K4bgAAgMNO3oKXu7uk5tSvY1Nfnq/1AQAAHO7yOsbLzEab2RpJVZLmuvvy1E0/N7N1ZvYbMzs2y2NvNbMVZraiuro6n2UCAABEIq/By90T7j5V0hRJV5vZZZL+l6SLJX1Q0rsk/XOWx97r7tPcfdrkyRkvdwQAAHBEieSsRnevlzRf0nXuXuFBh6SHJF0dRQ0AAACFls+zGieb2Ympn4+T9DlJW8zsjNQyk/QVSRvyVQMAAMDhJJ9nNZ4h6REzG60Q8J5191fN7E0zmyzJJK2R9Dd5rAEAAOCwkc+zGtdJujLD8k/na50AAACHs3y2eAEAgIh1dko7dkhjx0oXXCCZFboi9EbwAgCgSHR2Sg8+KFVWht8vv1y66abC1oR0XKsRAIAisXNnT+iSpHXrpKamwtWD/gheAAAUiWOOSf991ChpDH1bhxWCFwAAReL886UrU6e1jRolXX+9dNxxha0J6cjBAAAUkRtvlD772dDSdWzGi/KhkAheAAAUmQkTCl0BsqGrEQAAICIELwAAgIgQvAAAACJC8AIAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAACICMELAAAgIgQvAACAiBC8AAAAIkLwAgAAiAjBCwAAICIELwAAgIgQvAAAACJC8AIAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAACICMELAAAgIgQvAACAiBC8AAAAIkLwAgAAiAjBCwAAICIELwAAgIgQvAAAACJC8AIAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAKBIxeOFrgB9jSl0AQAAYGRVV0tPPCHV10sXXSTdfLM0enShq4JEixcAAEXn9ddD6JKkrVul1asLWg56IXgBAFBkOjvTf4/FClMH+iN4AQBQZK69Vho7Nvx88snSFVcUth70YIwXAABF5vzzpb/9W6mhQTr1VOmYYwpdEboQvAAAKEITJ4YvHF7oagQAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAACICMELAAAgInkLXmY2zsxKzGytmW00s5+llr/HzJab2Q4ze8bMmF0EAAAcFfLZ4tUh6dPufoWkqZKuM7MPS/qlpN+4+wWSDkr6yzzWAAAAcNjIW/DyoDn169jUl0v6tKTnUssfkfSVfNUAAABwOMnrGC8zG21mayRVSZoraaekenePp+5SJunMfNYAAABwuMhr8HL3hLtPlTRF0tWSLs71sWZ2q5mtMLMV1dXV+SoRAAAgMpGc1eju9ZLmS7pG0olm1nWNyCmS9md5zL3uPs3dp02ePDmKMgEAAPIqn2c1TjazE1M/Hyfpc5I2KwSwr6Xu9h1JL+erBgAAgMPJmMHvMmxnSHrEzEYrBLxn3f1VM9sk6Wkz+3+SVkt6II81AAAAHDbyFrzcfZ2kKzMs36Uw3gsAAOCowsz1AAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQ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Tlq2rNCVAACATAheReSCC6RTT5XOOafQlQAAgEzGFLoAjJzLLw9fAADg8ESLFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEZU+gCclFbW6uHH344bdn73vc+ffCDH1QsFtMTTzzR7zFTp07V1KlT1draqmeffbbf7dOmTdNll12mhoYGvfjii/1uv+aaa3TRRReppqZGr776ar/br732Wp133nmqrKzUnDlz+t3+mc98RmeddZb27dunefPm9bv9uuuu0+mnn65du3Zp4cKF/W7/0pe+pFNOOUVbt27V0qVL+93+1a9+VZMmTdKGDRu0YsWKfrfffPPNGj9+vNasWaM1a9b0u/2WW27R2LFj9c4772jjxo39bv/ud78rSVqyZIm2bduWdtvYsWN1yy23SJIWLFig3bt3p90+fvx43XzzzZKkN954Q2VlZWm3n3DCCbrpppskSXPmzFFlZWXa7SeffLJuuOEGSdKMGTNUW1ubdvvpp5+u6667TpL0wgsvqLGxMe32KVOm6LOf/awk6dlnn1Vra2va7e95z3v0iU98QpL0xBNPKBaLpd1+4YUX6iMf+Ygk9XvfSbz3eO/x3uO9x3uvL957A7/3eqPFCwAAICLm7oWuYVDTpk3zTAkTAADgcGNmK919WqbbCtLVaGalkpokJSTFsxUHAABQTAo5xutT7l5TwPUDAABEijFeAAAAESlU8HJJr5vZSjO7NdMdzOxWM1thZiuqq6sjLu/I1dkpNTcXugoAAJBJoYLXx9z9A5Kul/RDM7u27x3c/V53n+bu0yZPnhx9hUeoF16Q7rpLSiQKXQkAAOirIGO83H1/6nuVmb0o6WpJ/SfWwJBdfrl02mnS6NGFrgQAAPQVeYuXmU0ws4ldP0v6vKQNUddRrC69VPrUpwpdBQAAyKQQLV6nSXrRzLrW/6S795+GFgAAoMhEHrzcfZekK6JeLwAAQKExnQQAAEBECF5ABu6ueDJe6DIAAEWG4AVk8MrWV3TX8rsKXQYAoMgU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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "lambda=0.9231\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\Carl\\miniconda3\\envs\\gtg\\lib\\site-packages\\numpy\\lib\\scimath.py:122: RuntimeWarning: invalid value encountered in less\n",
      "  if any(isreal(x) & (x < 0)):\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl  Mixing    Nullh2   Pheno  PhenoCount  PValueThreshold  RandomValue  RandomThreshold  RandomSeed  PValueCount\n",
       "0        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.383880e-08   1.480571     0.256529         0.250627       0  0.417260  square           3             0.05     0.055916              0.1           0         3000\n",
       "1        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.308581e-05  -0.340112     0.077247         0.193755       0  0.495164    sqrt           3             0.05     0.102950              0.1           0         3000\n",
       "2        206  snp4879_m0_.01m1_.08  1.0    206.0   206.0  1.231412e-04   1.027894     0.265577         0.171053       0  0.417260  square           3             0.05     0.941165              0.1           0         3000\n",
       "3        853  snp3520_m0_.03m1_.05  1.0    853.0   853.0  1.493474e-04   1.003177     0.262495         0.168962       0  0.417260  square           3             0.05     0.485523              0.1           0         3000\n",
       "4        465  snp2263_m0_.33m1_.55  1.0    465.0   465.0  2.682321e-04   0.295622     0.080539         0.162459       0  0.495164    sqrt           3             0.05     0.900238              0.1           0         3000\n",
       "5        206  snp4879_m0_.01m1_.08  1.0    206.0   206.0  4.993080e-04  -0.277294     0.079131         0.155280       0  0.495164    sqrt           3             0.05     0.357896              0.1           0         3000\n",
       "6        571  snp3264_m0_.69m1_.51  1.0    571.0   571.0  5.098300e-04   0.277261     0.079251         0.155034       0  0.495164    sqrt           3             0.05     0.110969              0.1           0         3000\n",
       "7        389  snp2136_m0_.35m1_.29  1.0    389.0   389.0  1.104407e-03  -0.257725     0.078534         0.145635       0  0.495164    sqrt           3             0.05     0.767119              0.1           0         3000\n",
       "8        535    snp513_m0_.34m1_.6  1.0    535.0   535.0  1.235205e-03  -0.906270     0.278912         0.144227       0  0.417260  square           3             0.05     0.691705              0.1           0         3000\n",
       "9        460   snp2888_m0_.3m1_.22  1.0    460.0   460.0  1.526408e-03   0.832640     0.261235         0.141532       0  0.417260  square           3             0.05     0.067145              0.1           0         3000"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "      <th>Pheno</th>\n",
       "      <th>PhenoCount</th>\n",
       "      <th>PValueThreshold</th>\n",
       "      <th>RandomValue</th>\n",
       "      <th>RandomThreshold</th>\n",
       "      <th>RandomSeed</th>\n",
       "      <th>PValueCount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.383880e-08</td>\n",
       "      <td>1.480571</td>\n",
       "      <td>0.256529</td>\n",
       "      <td>0.250627</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.055916</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.308581e-05</td>\n",
       "      <td>-0.340112</td>\n",
       "      <td>0.077247</td>\n",
       "      <td>0.193755</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.102950</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>206</td>\n",
       "      <td>snp4879_m0_.01m1_.08</td>\n",
       "      <td>1.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>1.231412e-04</td>\n",
       "      <td>1.027894</td>\n",
       "      <td>0.265577</td>\n",
       "      <td>0.171053</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.941165</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>853</td>\n",
       "      <td>snp3520_m0_.03m1_.05</td>\n",
       "      <td>1.0</td>\n",
       "      <td>853.0</td>\n",
       "      <td>853.0</td>\n",
       "      <td>1.493474e-04</td>\n",
       "      <td>1.003177</td>\n",
       "      <td>0.262495</td>\n",
       "      <td>0.168962</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.485523</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>465</td>\n",
       "      <td>snp2263_m0_.33m1_.55</td>\n",
       "      <td>1.0</td>\n",
       "      <td>465.0</td>\n",
       "      <td>465.0</td>\n",
       "      <td>2.682321e-04</td>\n",
       "      <td>0.295622</td>\n",
       "      <td>0.080539</td>\n",
       "      <td>0.162459</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.900238</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>206</td>\n",
       "      <td>snp4879_m0_.01m1_.08</td>\n",
       "      <td>1.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>4.993080e-04</td>\n",
       "      <td>-0.277294</td>\n",
       "      <td>0.079131</td>\n",
       "      <td>0.155280</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.357896</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>571</td>\n",
       "      <td>snp3264_m0_.69m1_.51</td>\n",
       "      <td>1.0</td>\n",
       "      <td>571.0</td>\n",
       "      <td>571.0</td>\n",
       "      <td>5.098300e-04</td>\n",
       "      <td>0.277261</td>\n",
       "      <td>0.079251</td>\n",
       "      <td>0.155034</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.110969</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>389</td>\n",
       "      <td>snp2136_m0_.35m1_.29</td>\n",
       "      <td>1.0</td>\n",
       "      <td>389.0</td>\n",
       "      <td>389.0</td>\n",
       "      <td>1.104407e-03</td>\n",
       "      <td>-0.257725</td>\n",
       "      <td>0.078534</td>\n",
       "      <td>0.145635</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.767119</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>535</td>\n",
       "      <td>snp513_m0_.34m1_.6</td>\n",
       "      <td>1.0</td>\n",
       "      <td>535.0</td>\n",
       "      <td>535.0</td>\n",
       "      <td>1.235205e-03</td>\n",
       "      <td>-0.906270</td>\n",
       "      <td>0.278912</td>\n",
       "      <td>0.144227</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.691705</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>460</td>\n",
       "      <td>snp2888_m0_.3m1_.22</td>\n",
       "      <td>1.0</td>\n",
       "      <td>460.0</td>\n",
       "      <td>460.0</td>\n",
       "      <td>1.526408e-03</td>\n",
       "      <td>0.832640</td>\n",
       "      <td>0.261235</td>\n",
       "      <td>0.141532</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.067145</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 6
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Controlling Multi-Processor Runs\n",
    "\n",
    "The `single_snps` function can be run on multiple processors. By default, it divides the work across processors by chromosome. In our example, this makes sense for Part 1 but not Part 2 (because we are testing one chromosome at a time). Setting `map_reduce_outer=False` will instead internally divide the work by testing SNPs in chucks.\n",
    "\n",
    "Here is our example again, now using `runner` and `map_reduce_outer`."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "source": [
    "# To clear the cache, set this to True and run\r\n",
    "if False:\r\n",
    "    for cache_file in os.listdir(\"cache\"):\r\n",
    "        os.unlink(\"cache/\" + cache_file)"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "source": [
    "# import the algorithm\r\n",
    "import numpy as np\r\n",
    "from pysnptools.snpreader import Bed, Pheno\r\n",
    "from pysnptools.util.mapreduce1.runner import LocalMultiProc\r\n",
    "from fastlmm.association import single_snp\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# set up data\r\n",
    "##############################\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "all_snps = Bed(example_file('tests/datasets/synth/all.*','*.bed'),count_A1=False)\r\n",
    "# Find one test_snps per chromsome\r\n",
    "index_to_1_snp_per_chrom = np.unique(all_snps.pos[:,0],return_index=True)[1]\r\n",
    "small_test_snps = all_snps[:,index_to_1_snp_per_chrom]\r\n",
    "\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "pheno1 = Pheno(example_file(\"tests/datasets/synth/pheno_10_causals.txt\")).read()\r\n",
    "pheno3 = SnpData(iid=pheno1.iid,\r\n",
    "                 sid=[\"original\",\"sqrt\",\"square\"],\r\n",
    "                 val= np.c_[pheno1.val,pheno1.val**2,pheno1.val**3]\r\n",
    ")\r\n",
    "\r\n",
    "# set the runner to run on multiple processors\r\n",
    "##############################\r\n",
    "runner = LocalMultiProc(6) #Set to None to run locally\r\n",
    "\r\n",
    "# run gwas\r\n",
    "###################################################################\r\n",
    "ignore_df = single_snp(test_snps=small_test_snps, K0=all_snps, pheno=pheno3, covar=cov_fn, count_A1=False,\r\n",
    "             cache_file=\"cache/fastlmm2021sample\",\r\n",
    "             runner=runner)\r\n",
    "\r\n",
    "os.listdir(\"cache\")"
   ],
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "['fastlmm2021sample.1.0.npz',\n",
       " 'fastlmm2021sample.1.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.2.0.npz',\n",
       " 'fastlmm2021sample.2.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.3.0.npz',\n",
       " 'fastlmm2021sample.3.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.4.0.npz',\n",
       " 'fastlmm2021sample.4.0.npz.extra.npz',\n",
       " 'fastlmm2021sample.5.0.npz',\n",
       " 'fastlmm2021sample.5.0.npz.extra.npz']"
      ]
     },
     "metadata": {},
     "execution_count": 9
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "source": [
    "results_list = []\r\n",
    "for chrom in np.unique(all_snps.pos[:,0]): # For each chrom\r\n",
    "    test_snps = all_snps[:,all_snps.pos[:,0]==chrom] # Find the test SNPs in the chrom\r\n",
    "    chrom_df = single_snp(test_snps=test_snps,K0=all_snps, pheno=pheno3, covar=cov_fn, count_A1=False, \r\n",
    "                          cache_file=\"cache/fastlmm2021sample\",pvalue_threshold=5e-2, random_threshold=.1,\r\n",
    "                          runner=runner, map_reduce_outer=False)\r\n",
    "    results_list.append(chrom_df)\r\n",
    "results_df = pd.concat(results_list)\r\n",
    "results_df\r\n",
    "\r\n",
    "# manhattan plot\r\n",
    "import pylab\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "pylab.rcParams['figure.figsize'] = (10.0, 8.0)#For some reason, need again (appears above too) to get big figures\r\n",
    "top_pvalues_df = results_df[results_df['PValue']<=results_df['PValueThreshold']]\r\n",
    "flutil.manhattan_plot(top_pvalues_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5/pheno3.sid_count,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "\r\n",
    "# qq plot\r\n",
    "from fastlmm.util.stats import plotp\r\n",
    "random_df = results_df[results_df['RandomValue']<=results_df['RandomThreshold']]\r\n",
    "plotp.qqplot(random_df[\"PValue\"].values, xlim=[0,5], ylim=[0,5])\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAHgCAYAAAB0CWMeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABH/UlEQVR4nO3dd5xc9X3v//dHBYSEEBhEMaIYMM0YhJGxccHdAdsYm/jiOLgmDokf9iPxTX5JfJ3cm/jmOo4dgw3YGNN7E12ogBBCQnVR710rabW72qbtbcrn98d3tszuzO7saueMNHo9H4997O6Zcj47O+fM+3y/3/M95u4CAABA/o0qdAEAAABHC4IXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQETGFLqAXJxyyil+7rnnFroMAACAQa1cubLG3Sdnuu2ICF7nnnuuVqxYUegyAAAABmVme7LdRlcjAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABHJW/Ays3FmVmJma81so5n9LLX8YTPbbWZrUl9T81UDAADA4SSf83h1SPq0uzeb2VhJi8xsduq2f3T35/K4bgAAgMNO3oKXu7uk5tSvY1Nfnq/1AQAAHO7yOsbLzEab2RpJVZLmuvvy1E0/N7N1ZvYbMzs2y2NvNbMVZraiuro6n2UCAABEIq/By90T7j5V0hRJV5vZZZL+l6SLJX1Q0rsk/XOWx97r7tPcfdrkyRkvdwQAAHBEieSsRnevlzRf0nXuXuFBh6SHJF0dRQ0AAACFls+zGieb2Ympn4+T9DlJW8zsjNQyk/QVSRvyVQMAAMDhJJ9nNZ4h6REzG60Q8J5191fN7E0zmyzJJK2R9Dd5rAEAAOCwkc+zGtdJujLD8k/na50AAACHs3y2eAEAgIh1dko7dkhjx0oXXCCZFboi9EbwAgCgSHR2Sg8+KFVWht8vv1y66abC1oR0XKsRAIAisXNnT+iSpHXrpKamwtWD/gheAAAUiWOOSf991ChpDH1bhxWCFwAAReL886UrU6e1jRolXX+9dNxxha0J6cjBAAAUkRtvlD772dDSdWzGi/KhkAheAAAUmQkTCl0BsqGrEQAAICIELwAAgIgQvAAAACJC8AIAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAACICMELAAAgIgQvAACAiBC8AAAAIkLwAgAAiAjBCwAAICIELwAAgIgQvAAAACJC8AIAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAACICMELAAAgIgQvAACAiBC8AAAAIkLwAgAAiAjBCwAAICIELwAAgIgQvAAAACJC8AIAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAKBIxeOFrgB9jSl0AQAAYGRVV0tPPCHV10sXXSTdfLM0enShq4JEixcAAEXn9ddD6JKkrVul1asLWg56IXgBAFBkOjvTf4/FClMH+iN4AQBQZK69Vho7Nvx88snSFVcUth70YIwXAABF5vzzpb/9W6mhQTr1VOmYYwpdEboQvAAAKEITJ4YvHF7oagQAAIgIwQsAACAiBC8AAICIELwAAAAiQvACAACICMELAAAgInkLXmY2zsxKzGytmW00s5+llr/HzJab2Q4ze8bMmF0EAAAcFfLZ4tUh6dPufoWkqZKuM7MPS/qlpN+4+wWSDkr6yzzWAAAAcNjIW/DyoDn169jUl0v6tKTnUssfkfSVfNUAAABwOMnrGC8zG21mayRVSZoraaekenePp+5SJunMfNYAAABwuMhr8HL3hLtPlTRF0tWSLs71sWZ2q5mtMLMV1dXV+SoRAAAgMpGc1eju9ZLmS7pG0olm1nWNyCmS9md5zL3uPs3dp02ePDmKMgEAAPIqn2c1TjazE1M/Hyfpc5I2KwSwr6Xu9h1JL+erBgAAgMPJmMHvMmxnSHrEzEYrBLxn3f1VM9sk6Wkz+3+SVkt6II81AAAAHDbyFrzcfZ2kKzMs36Uw3gsAAOCowsz1AAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQ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Tlq2rNCVAACATAheReSCC6RTT5XOOafQlQAAgEzGFLoAjJzLLw9fAADg8ESLFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEheAEAAESE4AUAABARghcAAEBECF4AAAARIXgBAABEhOAFAAAQEYIXAABARAheAAAAESF4AQAARITgBQAAEBGCFwAAQEQIXgAAABEZU+gCclFbW6uHH344bdn73vc+ffCDH1QsFtMTTzzR7zFTp07V1KlT1draqmeffbbf7dOmTdNll12mhoYGvfjii/1uv+aaa3TRRReppqZGr776ar/br732Wp133nmqrKzUnDlz+t3+mc98RmeddZb27dunefPm9bv9uuuu0+mnn65du3Zp4cKF/W7/0pe+pFNOOUVbt27V0qVL+93+1a9+VZMmTdKGDRu0YsWKfrfffPPNGj9+vNasWaM1a9b0u/2WW27R2LFj9c4772jjxo39bv/ud78rSVqyZIm2bduWdtvYsWN1yy23SJIWLFig3bt3p90+fvx43XzzzZKkN954Q2VlZWm3n3DCCbrpppskSXPmzFFlZWXa7SeffLJuuOEGSdKMGTNUW1ubdvvpp5+u6667TpL0wgsvqLGxMe32KVOm6LOf/awk6dlnn1Vra2va7e95z3v0iU98QpL0xBNPKBaLpd1+4YUX6iMf+Ygk9XvfSbz3eO/x3uO9x3uvL957A7/3eqPFCwAAICLm7oWuYVDTpk3zTAkTAADgcGNmK919WqbbCtLVaGalkpokJSTFsxUHAABQTAo5xutT7l5TwPUDAABEijFeAAAAESlU8HJJr5vZSjO7NdMdzOxWM1thZiuqq6sjLu/I1dkpNTcXugoAAJBJoYLXx9z9A5Kul/RDM7u27x3c/V53n+bu0yZPnhx9hUeoF16Q7rpLSiQKXQkAAOirIGO83H1/6nuVmb0o6WpJ/SfWwJBdfrl02mnS6NGFrgQAAPQVeYuXmU0ws4ldP0v6vKQNUddRrC69VPrUpwpdBQAAyKQQLV6nSXrRzLrW/6S795+GFgAAoMhEHrzcfZekK6JeLwAAQKExnQQAAEBECF5ABu6ueDJe6DIAAEWG4AVk8MrWV3TX8rsKXQYAoMgU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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "lambda=0.9231\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\Carl\\miniconda3\\envs\\gtg\\lib\\site-packages\\numpy\\lib\\scimath.py:122: RuntimeWarning: invalid value encountered in less\n",
      "  if any(isreal(x) & (x < 0)):\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl  Mixing    Nullh2   Pheno  PhenoCount  PValueThreshold  RandomValue  RandomThreshold  RandomSeed  PValueCount\n",
       "0        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.383880e-08   1.480571     0.256529         0.250627       0  0.417260  square           3             0.05     0.055916              0.1           0         3000\n",
       "1        725     snp1386_m0_m1_.01  1.0    725.0   725.0  1.308581e-05  -0.340112     0.077247         0.193755       0  0.495164    sqrt           3             0.05     0.102950              0.1           0         3000\n",
       "2        206  snp4879_m0_.01m1_.08  1.0    206.0   206.0  1.231412e-04   1.027894     0.265577         0.171053       0  0.417260  square           3             0.05     0.941165              0.1           0         3000\n",
       "3        853  snp3520_m0_.03m1_.05  1.0    853.0   853.0  1.493474e-04   1.003177     0.262495         0.168962       0  0.417260  square           3             0.05     0.485523              0.1           0         3000\n",
       "4        465  snp2263_m0_.33m1_.55  1.0    465.0   465.0  2.682321e-04   0.295622     0.080539         0.162459       0  0.495164    sqrt           3             0.05     0.900238              0.1           0         3000\n",
       "5        206  snp4879_m0_.01m1_.08  1.0    206.0   206.0  4.993080e-04  -0.277294     0.079131         0.155280       0  0.495164    sqrt           3             0.05     0.357896              0.1           0         3000\n",
       "6        571  snp3264_m0_.69m1_.51  1.0    571.0   571.0  5.098300e-04   0.277261     0.079251         0.155034       0  0.495164    sqrt           3             0.05     0.110969              0.1           0         3000\n",
       "7        389  snp2136_m0_.35m1_.29  1.0    389.0   389.0  1.104407e-03  -0.257725     0.078534         0.145635       0  0.495164    sqrt           3             0.05     0.767119              0.1           0         3000\n",
       "8        535    snp513_m0_.34m1_.6  1.0    535.0   535.0  1.235205e-03  -0.906270     0.278912         0.144227       0  0.417260  square           3             0.05     0.691705              0.1           0         3000\n",
       "9        460   snp2888_m0_.3m1_.22  1.0    460.0   460.0  1.526408e-03   0.832640     0.261235         0.141532       0  0.417260  square           3             0.05     0.067145              0.1           0         3000"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "      <th>Pheno</th>\n",
       "      <th>PhenoCount</th>\n",
       "      <th>PValueThreshold</th>\n",
       "      <th>RandomValue</th>\n",
       "      <th>RandomThreshold</th>\n",
       "      <th>RandomSeed</th>\n",
       "      <th>PValueCount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.383880e-08</td>\n",
       "      <td>1.480571</td>\n",
       "      <td>0.256529</td>\n",
       "      <td>0.250627</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.055916</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>725</td>\n",
       "      <td>snp1386_m0_m1_.01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>725.0</td>\n",
       "      <td>1.308581e-05</td>\n",
       "      <td>-0.340112</td>\n",
       "      <td>0.077247</td>\n",
       "      <td>0.193755</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.102950</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>206</td>\n",
       "      <td>snp4879_m0_.01m1_.08</td>\n",
       "      <td>1.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>1.231412e-04</td>\n",
       "      <td>1.027894</td>\n",
       "      <td>0.265577</td>\n",
       "      <td>0.171053</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.941165</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>853</td>\n",
       "      <td>snp3520_m0_.03m1_.05</td>\n",
       "      <td>1.0</td>\n",
       "      <td>853.0</td>\n",
       "      <td>853.0</td>\n",
       "      <td>1.493474e-04</td>\n",
       "      <td>1.003177</td>\n",
       "      <td>0.262495</td>\n",
       "      <td>0.168962</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.485523</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>465</td>\n",
       "      <td>snp2263_m0_.33m1_.55</td>\n",
       "      <td>1.0</td>\n",
       "      <td>465.0</td>\n",
       "      <td>465.0</td>\n",
       "      <td>2.682321e-04</td>\n",
       "      <td>0.295622</td>\n",
       "      <td>0.080539</td>\n",
       "      <td>0.162459</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.900238</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>206</td>\n",
       "      <td>snp4879_m0_.01m1_.08</td>\n",
       "      <td>1.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>206.0</td>\n",
       "      <td>4.993080e-04</td>\n",
       "      <td>-0.277294</td>\n",
       "      <td>0.079131</td>\n",
       "      <td>0.155280</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.357896</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>571</td>\n",
       "      <td>snp3264_m0_.69m1_.51</td>\n",
       "      <td>1.0</td>\n",
       "      <td>571.0</td>\n",
       "      <td>571.0</td>\n",
       "      <td>5.098300e-04</td>\n",
       "      <td>0.277261</td>\n",
       "      <td>0.079251</td>\n",
       "      <td>0.155034</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.110969</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>389</td>\n",
       "      <td>snp2136_m0_.35m1_.29</td>\n",
       "      <td>1.0</td>\n",
       "      <td>389.0</td>\n",
       "      <td>389.0</td>\n",
       "      <td>1.104407e-03</td>\n",
       "      <td>-0.257725</td>\n",
       "      <td>0.078534</td>\n",
       "      <td>0.145635</td>\n",
       "      <td>0</td>\n",
       "      <td>0.495164</td>\n",
       "      <td>sqrt</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.767119</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>535</td>\n",
       "      <td>snp513_m0_.34m1_.6</td>\n",
       "      <td>1.0</td>\n",
       "      <td>535.0</td>\n",
       "      <td>535.0</td>\n",
       "      <td>1.235205e-03</td>\n",
       "      <td>-0.906270</td>\n",
       "      <td>0.278912</td>\n",
       "      <td>0.144227</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.691705</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>460</td>\n",
       "      <td>snp2888_m0_.3m1_.22</td>\n",
       "      <td>1.0</td>\n",
       "      <td>460.0</td>\n",
       "      <td>460.0</td>\n",
       "      <td>1.526408e-03</td>\n",
       "      <td>0.832640</td>\n",
       "      <td>0.261235</td>\n",
       "      <td>0.141532</td>\n",
       "      <td>0</td>\n",
       "      <td>0.417260</td>\n",
       "      <td>square</td>\n",
       "      <td>3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.067145</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0</td>\n",
       "      <td>3000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 10
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Single_Snp Summary\n",
    "\n",
    "We've seen that the `single_snp` function now supports multiple phenotypes. This support typically creates more output. Additional new features make longer runs and runs with more output more manageable.\n",
    "\n",
    "FaST-LMM also offers the `single_snp_scale` function [(notebook)](https://nbviewer.jupyter.org/github/fastlmm/FaST-LMM/blob/master/doc/ipynb/SingleSnpScale.ipynb). It also supports multiple phenotypes, can run on a cluster of dozens or hundreds of CPUs, and is more memory efficient. However, its memory efficiency makes it a bit slower.\n"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "<a id=\"epistasis\"></a>\r\n",
    "## Epistasis\r\n",
    "\r\n",
    "Recall that FaST-LMM allows you to test for epistatic interactions between pairs of SNPs. The code optimizes (δ and thus h2) using REML, and computes P-values for an epistatic interaction via a likelihood-ratio test based on ML (see [(Lippert, et al., 2011)](https://static-content.springer.com/esm/art%3A10.1038%2Fnmeth.1681/MediaObjects/41592_2011_BFnmeth1681_MOESM290_ESM.pdf).\r\n",
    "\r\n",
    "New for 2021, the output includes β, the linear coefficient of the epistatic interaction, and its variance. Specifically, the epistatic interaction is the product of standardized SNPs (SNPs values scaled to have mean 0 and variance 1), and is a fixed effect.\r\n",
    "\r\n",
    "Thanks to Ava Khamseh of the University of University of Edinburgh for [her derivation of the formula for the variance](https://github.com/fastlmm/FaST-LMM/raw/epibeta/doc/notes/FaST_LMM_variance.pdf) and for requesting this feature.\r\n",
    "\r\n",
    "Here is the example from the main FaST-LMM notebook, showing the new output columns."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "source": [
    "import numpy as np\r\n",
    "import pandas as pd\r\n",
    "from fastlmm.association import epistasis\r\n",
    "from pysnptools.snpreader import Bed\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# define file names\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "bed_reader = Bed(bed_fn, count_A1=True)\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# partition data into the first 50 SNPs on chr1 and all but chr1\r\n",
    "G0 = bed_reader[:,bed_reader.pos[:,0] != 1]\r\n",
    "test_snps = bed_reader[:,bed_reader.pos[:,0] == 1][:,0:50]\r\n",
    "\r\n",
    "# run epistasis analysis\r\n",
    "results_df = epistasis(test_snps, pheno_fn, G0=G0, covar=cov_fn)\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                   SNP0  Chr0  GenDist0  ChrPos0                  SNP1  Chr1  GenDist1  ChrPos1    PValue  NullLogLike  AltLogLike        H2      Beta  Variance_Beta\n",
       "0  snp2376_m0_.38m1_.49   1.0      20.0     20.0  snp1754_m0_.19m1_.42   1.0      38.0     38.0  0.000451  -700.878718 -694.724583  0.000399  0.151714   7.372408e-07\n",
       "1   snp625_m0_.03m1_.07   1.0       NaN      NaN  snp3000_m0_.28m1_.34   1.0       5.0      5.0  0.001306  -700.387891 -695.220652  0.000399 -0.117448   5.272537e-07\n",
       "2   snp250_m0_.23m1_.19   1.0      15.0     15.0  snp2377_m0_.06m1_.02   1.0      30.0     30.0  0.002279  -698.768488 -694.113511  0.000399 -0.145412   8.980881e-07\n",
       "3   snp625_m0_.03m1_.07   1.0       NaN      NaN   snp376_m0_.17m1_.17   1.0       9.0      9.0  0.002287  -700.206861 -695.555229  0.000399 -0.132940   7.511802e-07\n",
       "4   snp125_m0_.64m1_.41   1.0      21.0     21.0  snp1754_m0_.19m1_.42   1.0      38.0     38.0  0.002404  -700.873861 -696.267594  0.000399 -0.131984   7.477779e-07\n",
       "5  snp2878_m0_.82m1_.58   1.0      42.0     42.0  snp1878_m0_.58m1_.36   1.0      48.0     48.0  0.002568  -698.579519 -694.033792  0.000399 -0.131828   7.560385e-07\n",
       "6   snp1625_m0_.4m1_.47   1.0      23.0     23.0  snp1128_m0_.14m1_.13   1.0      35.0     35.0  0.003067  -700.445456 -696.061998  0.000399  0.129267   7.540972e-07\n",
       "7  snp1753_m0_.17m1_.19   1.0      28.0     28.0     snp3_m0_.55m1_.46   1.0      32.0     32.0  0.004327  -700.735073 -696.664365  0.000399  0.126579   7.791090e-07\n",
       "8   snp250_m0_.23m1_.19   1.0      15.0     15.0     snp3_m0_.55m1_.46   1.0      32.0     32.0  0.004486  -700.927439 -696.889564  0.000399 -0.120030   7.063126e-07\n",
       "9  snp1753_m0_.17m1_.19   1.0      28.0     28.0    snp251_m0_.1m1_.49   1.0      33.0     33.0  0.006503  -700.728933 -697.026244  0.000399 -0.115623   7.152112e-07"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SNP0</th>\n",
       "      <th>Chr0</th>\n",
       "      <th>GenDist0</th>\n",
       "      <th>ChrPos0</th>\n",
       "      <th>SNP1</th>\n",
       "      <th>Chr1</th>\n",
       "      <th>GenDist1</th>\n",
       "      <th>ChrPos1</th>\n",
       "      <th>PValue</th>\n",
       "      <th>NullLogLike</th>\n",
       "      <th>AltLogLike</th>\n",
       "      <th>H2</th>\n",
       "      <th>Beta</th>\n",
       "      <th>Variance_Beta</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>snp2376_m0_.38m1_.49</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>snp1754_m0_.19m1_.42</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>0.000451</td>\n",
       "      <td>-700.878718</td>\n",
       "      <td>-694.724583</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.151714</td>\n",
       "      <td>7.372408e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>snp625_m0_.03m1_.07</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>snp3000_m0_.28m1_.34</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.001306</td>\n",
       "      <td>-700.387891</td>\n",
       "      <td>-695.220652</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.117448</td>\n",
       "      <td>5.272537e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>snp250_m0_.23m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>snp2377_m0_.06m1_.02</td>\n",
       "      <td>1.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>0.002279</td>\n",
       "      <td>-698.768488</td>\n",
       "      <td>-694.113511</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.145412</td>\n",
       "      <td>8.980881e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>snp625_m0_.03m1_.07</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>snp376_m0_.17m1_.17</td>\n",
       "      <td>1.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.002287</td>\n",
       "      <td>-700.206861</td>\n",
       "      <td>-695.555229</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.132940</td>\n",
       "      <td>7.511802e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>snp125_m0_.64m1_.41</td>\n",
       "      <td>1.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>snp1754_m0_.19m1_.42</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>0.002404</td>\n",
       "      <td>-700.873861</td>\n",
       "      <td>-696.267594</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.131984</td>\n",
       "      <td>7.477779e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>snp2878_m0_.82m1_.58</td>\n",
       "      <td>1.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>snp1878_m0_.58m1_.36</td>\n",
       "      <td>1.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>0.002568</td>\n",
       "      <td>-698.579519</td>\n",
       "      <td>-694.033792</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.131828</td>\n",
       "      <td>7.560385e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>snp1625_m0_.4m1_.47</td>\n",
       "      <td>1.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>snp1128_m0_.14m1_.13</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0.003067</td>\n",
       "      <td>-700.445456</td>\n",
       "      <td>-696.061998</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.129267</td>\n",
       "      <td>7.540972e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>snp1753_m0_.17m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>snp3_m0_.55m1_.46</td>\n",
       "      <td>1.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.004327</td>\n",
       "      <td>-700.735073</td>\n",
       "      <td>-696.664365</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.126579</td>\n",
       "      <td>7.791090e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>snp250_m0_.23m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>snp3_m0_.55m1_.46</td>\n",
       "      <td>1.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.004486</td>\n",
       "      <td>-700.927439</td>\n",
       "      <td>-696.889564</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.120030</td>\n",
       "      <td>7.063126e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>snp1753_m0_.17m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>snp251_m0_.1m1_.49</td>\n",
       "      <td>1.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.006503</td>\n",
       "      <td>-700.728933</td>\n",
       "      <td>-697.026244</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.115623</td>\n",
       "      <td>7.152112e-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 15
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "## User-supplied eigenvalue decomposition for epistasis\r\n",
    "\r\n",
    "Now, let's look at the same example where the eigenvalue decomposition of realized relationship matrix (RRM) is known.\r\n",
    "\r\n",
    "We can provide the eigenvalues and eigenvector by writing a npz file and passing it to 'epistasis'."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "To start the example, we need to create our new inputs\n",
    "* S and U from the eigenvalue decomposition of the standardized RRM. Standardized means that the SNPs used to compute the matrix have mean 0 and standard deviation 1.\n",
    "* A list of the individuals in the order they appear in the decomposition\n"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "source": [
    "# Precompute the decomposition of the kinship kernel.\r\n",
    "G = G0[::-1,:] # We reverse the order of the individuals, just to show that any order is allowed\r\n",
    "Gval = G.read().standardize().val\r\n",
    "K = Gval.dot(Gval.T)\r\n",
    "# So the Eigen values and vector are:\r\n",
    "S,U = np.linalg.eigh(K)\r\n",
    "# and the order of the individuals in the eigenvector is\r\n",
    "eigen_iid = G.iid\r\n",
    "print(f\"{eigen_iid[:3]}...\")"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[['cid499P1' 'cid499P1']\n",
      " ['cid498P1' 'cid498P1']\n",
      " ['cid497P1' 'cid497P1']]...\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "When we have the eigenvalue decomposition, we save it to a file. We also create a \"fake_G\" file. The \"fake_G\" file is then used that to create a test SNP reader that orders individuals to match the order in the eigenvalue decomposition."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "source": [
    "from pathlib import Path\r\n",
    "from pysnptools.snpreader import SnpData\r\n",
    "from pysnptools.util import intersect_apply\r\n",
    "\r\n",
    "\r\n",
    "# We write the vector and the values to a npz file.\r\n",
    "cache_file = \"cache/us.npz\"\r\n",
    "Path(cache_file).parent.mkdir(exist_ok=True)\r\n",
    "np.savez(cache_file,U,S) # note that U goes before S\r\n",
    "\r\n",
    "# We create a fake G, the SNPs that created the kinship matrix\r\n",
    "fake_G = SnpData(iid=eigen_iid,sid=[\"fake_sid\"],val=np.full((test_snps.iid_count,1),np.nan))\r\n",
    "\r\n",
    "# Reorder test_snps to match the order in the eigen_iid\r\n",
    "fake_G_after, test_snps_reordered = intersect_apply([fake_G, test_snps])\r\n",
    "assert np.all(fake_G_after.iid == fake_G.iid) # prove that eigen_iid are unchanged"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "Finally, we run epistasis using\r\n",
    "* the test SNPs reordered to match eigen_iid\r\n",
    "* the fake G file\r\n",
    "* the cached file containing the decomposition\r\n",
    "\r\n",
    "We get the same results as before."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "source": [
    "df = epistasis(test_snps_reordered, pheno_fn, G0=fake_G, covar=cov_fn, cache_file=cache_file)\r\n",
    "df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                   SNP0  Chr0  GenDist0  ChrPos0                  SNP1  Chr1  GenDist1  ChrPos1    PValue  NullLogLike  AltLogLike        H2      Beta  Variance_Beta\n",
       "0  snp2376_m0_.38m1_.49   1.0      20.0     20.0  snp1754_m0_.19m1_.42   1.0      38.0     38.0  0.000451  -700.878718 -694.724583  0.000399  0.151714   7.372408e-07\n",
       "1   snp625_m0_.03m1_.07   1.0       NaN      NaN  snp3000_m0_.28m1_.34   1.0       5.0      5.0  0.001306  -700.387891 -695.220652  0.000399 -0.117448   5.272537e-07\n",
       "2   snp250_m0_.23m1_.19   1.0      15.0     15.0  snp2377_m0_.06m1_.02   1.0      30.0     30.0  0.002279  -698.768488 -694.113511  0.000399 -0.145412   8.980881e-07\n",
       "3   snp625_m0_.03m1_.07   1.0       NaN      NaN   snp376_m0_.17m1_.17   1.0       9.0      9.0  0.002287  -700.206861 -695.555229  0.000399 -0.132940   7.511802e-07\n",
       "4   snp125_m0_.64m1_.41   1.0      21.0     21.0  snp1754_m0_.19m1_.42   1.0      38.0     38.0  0.002404  -700.873861 -696.267594  0.000399 -0.131984   7.477779e-07\n",
       "5  snp2878_m0_.82m1_.58   1.0      42.0     42.0  snp1878_m0_.58m1_.36   1.0      48.0     48.0  0.002568  -698.579519 -694.033792  0.000399 -0.131828   7.560385e-07\n",
       "6   snp1625_m0_.4m1_.47   1.0      23.0     23.0  snp1128_m0_.14m1_.13   1.0      35.0     35.0  0.003067  -700.445456 -696.061998  0.000399  0.129267   7.540972e-07\n",
       "7  snp1753_m0_.17m1_.19   1.0      28.0     28.0     snp3_m0_.55m1_.46   1.0      32.0     32.0  0.004327  -700.735073 -696.664365  0.000399  0.126579   7.791090e-07\n",
       "8   snp250_m0_.23m1_.19   1.0      15.0     15.0     snp3_m0_.55m1_.46   1.0      32.0     32.0  0.004486  -700.927439 -696.889564  0.000399 -0.120030   7.063126e-07\n",
       "9  snp1753_m0_.17m1_.19   1.0      28.0     28.0    snp251_m0_.1m1_.49   1.0      33.0     33.0  0.006503  -700.728933 -697.026244  0.000399 -0.115623   7.152112e-07"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SNP0</th>\n",
       "      <th>Chr0</th>\n",
       "      <th>GenDist0</th>\n",
       "      <th>ChrPos0</th>\n",
       "      <th>SNP1</th>\n",
       "      <th>Chr1</th>\n",
       "      <th>GenDist1</th>\n",
       "      <th>ChrPos1</th>\n",
       "      <th>PValue</th>\n",
       "      <th>NullLogLike</th>\n",
       "      <th>AltLogLike</th>\n",
       "      <th>H2</th>\n",
       "      <th>Beta</th>\n",
       "      <th>Variance_Beta</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>snp2376_m0_.38m1_.49</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>snp1754_m0_.19m1_.42</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>0.000451</td>\n",
       "      <td>-700.878718</td>\n",
       "      <td>-694.724583</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.151714</td>\n",
       "      <td>7.372408e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>snp625_m0_.03m1_.07</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>snp3000_m0_.28m1_.34</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.001306</td>\n",
       "      <td>-700.387891</td>\n",
       "      <td>-695.220652</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.117448</td>\n",
       "      <td>5.272537e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>snp250_m0_.23m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>snp2377_m0_.06m1_.02</td>\n",
       "      <td>1.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>0.002279</td>\n",
       "      <td>-698.768488</td>\n",
       "      <td>-694.113511</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.145412</td>\n",
       "      <td>8.980881e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>snp625_m0_.03m1_.07</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>snp376_m0_.17m1_.17</td>\n",
       "      <td>1.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.002287</td>\n",
       "      <td>-700.206861</td>\n",
       "      <td>-695.555229</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.132940</td>\n",
       "      <td>7.511802e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>snp125_m0_.64m1_.41</td>\n",
       "      <td>1.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>snp1754_m0_.19m1_.42</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>0.002404</td>\n",
       "      <td>-700.873861</td>\n",
       "      <td>-696.267594</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.131984</td>\n",
       "      <td>7.477779e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>snp2878_m0_.82m1_.58</td>\n",
       "      <td>1.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>snp1878_m0_.58m1_.36</td>\n",
       "      <td>1.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>0.002568</td>\n",
       "      <td>-698.579519</td>\n",
       "      <td>-694.033792</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.131828</td>\n",
       "      <td>7.560385e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>snp1625_m0_.4m1_.47</td>\n",
       "      <td>1.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>snp1128_m0_.14m1_.13</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0.003067</td>\n",
       "      <td>-700.445456</td>\n",
       "      <td>-696.061998</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.129267</td>\n",
       "      <td>7.540972e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>snp1753_m0_.17m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>snp3_m0_.55m1_.46</td>\n",
       "      <td>1.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.004327</td>\n",
       "      <td>-700.735073</td>\n",
       "      <td>-696.664365</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.126579</td>\n",
       "      <td>7.791090e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>snp250_m0_.23m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>snp3_m0_.55m1_.46</td>\n",
       "      <td>1.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.004486</td>\n",
       "      <td>-700.927439</td>\n",
       "      <td>-696.889564</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.120030</td>\n",
       "      <td>7.063126e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>snp1753_m0_.17m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>snp251_m0_.1m1_.49</td>\n",
       "      <td>1.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.006503</td>\n",
       "      <td>-700.728933</td>\n",
       "      <td>-697.026244</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.115623</td>\n",
       "      <td>7.152112e-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 18
    }
   ],
   "metadata": {}
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3.7.10 64-bit ('gtg': conda)"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  },
  "interpreter": {
   "hash": "4c1fc4438d6c4857b2f27b149a81a0fed04badbd4b966100ab17cc58a9085210"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}